package com.xxc.exam.mapper

import com.xxc.exam.entity.QuestionEntity
import com.xxc.exam.entity.pojo.Question
import com.xxc.batis.mapper.CrudMapper
import com.xxc.exam.entity.`do`.PairDO
import com.xxc.exam.entity.dto.QuestionBatchDto
import org.apache.ibatis.annotations.Param
import org.springframework.stereotype.Repository
import java.math.BigInteger

@Repository
interface QuestionMapper : CrudMapper<Question> {
    /**
     * 通过POJO查找符合条件的实体
     */
    fun selectEntitiesByCondition(entity: Question):List<QuestionEntity>

    fun selectAllEntities():List<QuestionEntity>

    fun batchUpdate(questions:QuestionBatchDto)

    /**
     * 通过大题id,题目分类和题目类型以及题目数量获取题目
     */
    fun selectQuesBySelection(@Param("type") type:Int,
                              @Param("categories")categories: String,
                              @Param("levelMap") levelMap:Map<Int,Int>):List<Question>

    /**
     * 获取相应分类id下的题目不同level的数量
     * @param categories 分类id
     * @param id 用户id
     * @param type 题目类型
     */
    fun categoriesQuesCounts(@Param("categories") categories:List<BigInteger>,@Param("id") id:BigInteger,@Param("type") type:Int):List<PairDO<Int,Int>>
}